As regards providing on-demand software, it is possible to use the so-called <<virtualization>> technique.
Virtualization is a technique allowing an operating system and applications (for example software packages) to be performed on a virtual machine. According to this technique, the operating system and the applications do not have directly access to the hardware peripherals of the physical machine which applies them.
Virtualized applications have access to hardware peripherals via a <<hypervisor>>. The hypervisor is a program which has the function of emulating peripherals for virtual machines by using the hardware peripherals actually present on the physical machine.
Virtualization may be used for providing remote execution of software packages in machines of a computer network. These services are known as “cloud computing”.
FIG. 1 illustrates the software and hardware structure of a virtualization server 100, i.e. a server applying virtual machines.
The server includes a set of peripherals 101 (HARDW) used for its operation such as for example one or several processors, RAM units, storage units (hard disks for example), communication units or any other piece of hardware. The server runs under the control of an operating system 102 (OS) which manages the use of the peripherals by the server and the execution of a hypervisor module 103 (HOST). The hypervisor module makes up the interface between virtual machines 104, 105 and actual peripherals 101 of the server. Two virtual machines are illustrated in FIG. 1, but the execution of another number of virtual machines may be contemplated.
Each virtual machine 104 and 105 allows access to be given to a user terminal 109 (or several terminals) connected to the server 100, to emulated peripherals 106 (HARW1, HARDW2), to an operating system 107 (OS1, OS2) and applications 108 (APPS1, APPS2) as if they were present on the actual terminal 109.
Virtual machines allow on-demand software services to be proposed. According to these services, a user may apply software packages which are executed by the servers of an operator network. It is then no longer necessary that the user have a performing machine, specifically adapted to the use of a software package, nor that he be concerned with installing the software package on his/her terminal. For example, the user may both have access to games which require high performances as regards hardware and to less demanding desktop applications.
According to such services, a user has a terminal (personal computer, Set Top Box, a touch pad or other system) connected to the network of an operator providing an on-demand software providing service and sends a request for use of a given software package.
A server of the network receives this request and then starts a virtual machine for this user thus making the requested software package available on the terminal of the user via a broadcasting protocol (such as for example VNC, acronym of <<Virtual Network Computing>>, MpeG2, or other protocol).
Upon closing the application, a command is sent by the user and the virtual machine is stopped and the context of the user may be deleted.
At each instant, a virtual machine may be represented by a set of data representing:                the operating system of the virtual machine,        the software packages applied in this operating system,        the state of the virtual machine, i.e. the state of the peripherals simulated by the virtual machine (hard disk, mouse or other peripheral), and        the context of use of the virtual machine, i.e. the data from the execution of an application (temporary files for example).        
In order to launch a virtual machine and put a software package at the disposal of a user, it is then sufficient to assemble the data corresponding to the desired software package, to the associated operating system, to the peripherals required for executing the software package and to the context of use of the user.
With the presently proposed architectures of virtual machines, it is necessary to generate as many sets of data (operating system, software package, state of the machine, user context) as there are simultaneous users.
This poses problems for loading the virtualization server, especially when it is desired to provide the on-demand software package service on a large scale.
Indeed, it is difficult to select a fixed number of servers beforehand in order to deal with the requests from the users, given that this demand may strongly change depending on a large number of parameters such as for example the success of a software package in particular, the period of the day or another parameter.